import { request } from '@/utils/service'

/**
 * 管理员登录
 * 接口描述: 管理员登录认证
 * 接口必填项:
 * username-用户名
 * password-密码
 * @param {Object} data 登录数据
 * @returns Promise
 */
export function adminLoginApi(data) {
  return request({
    url: "admin/login",
    method: "post",
    data
  })
}

/**
 * 学生登录
 * 接口描述: 学生登录认证
 * 接口必填项:
 * sno-学号
 * password-密码
 * @param {Object} data 登录数据
 * @returns Promise
 */
export function studentLoginApi(data) {
  return request({
    url: "student/login",
    method: "post",
    data
  })
}

/**
 * 创建管理员
 * 接口描述: 创建新的管理员账户
 * 接口必填项:
 * username-用户名
 * password-密码
 * role-角色
 * @param {Object} data 管理员数据
 * @returns Promise
 */
export function createAdminApi(data) {
  return request({
    url: "admin",
    method: "post",
    data
  })
}

/**
 * 更新管理员信息
 * 接口描述: 更新管理员基本信息
 * 接口必填项:
 * id-管理员ID
 * username-用户名
 * @param {number} id 管理员ID
 * @param {Object} data 管理员数据
 * @returns Promise
 */
export function updateAdminApi(id, data) {
  return request({
    url: `admin/${id}`,
    method: "put",
    data
  })
}

/**
 * 删除管理员
 * 接口描述: 根据ID删除管理员
 * 接口必填项:
 * id-管理员ID
 * @param {number} id 管理员ID
 * @returns Promise
 */
export function deleteAdminApi(id) {
  return request({
    url: `admin/${id}`,
    method: "delete"
  })
}

/**
 * 获取管理员详情
 * 接口描述: 根据ID获取管理员详细信息
 * 接口必填项:
 * id-管理员ID
 * @param {number} id 管理员ID
 * @returns Promise
 */
export function getAdminDetailApi(id) {
  return request({
    url: `admin/${id}`,
    method: "get"
  })
}

/**
 * 获取管理员列表（分页查询）
 * 接口描述: 分页获取管理员列表，支持搜索和角色过滤
 * 接口可选项:
 * page-页码(默认1)
 * page_size-每页大小(默认10)
 * search-搜索关键词(用户名模糊查询)
 * role-角色过滤(0-学生，1-管理员，2-超级管理员)
 * @param {Object} params 查询参数
 * @returns Promise
 */
export function getAdminsApi(params) {
  return request({
    url: "admin",
    method: "get",
    params
  })
}

/**
 * 修改管理员密码
 * 接口描述: 修改管理员密码
 * 接口必填项:
 * id-管理员ID
 * oldPassword-旧密码
 * newPassword-新密码
 * @param {Object} data 密码修改数据
 * @returns Promise
 */
export function updateAdminPasswordApi(data) {
  return request({
    url: "admin/change-password",
    method: "post",
    data
  })
}
